// package com.tfswx.jkgl.core.sccl;
//
// import com.newbie.core.exception.RuntimeException;
// import com.tfswx.jkgl.core.dto.Rcpz;
// import com.tfswx.jkgl.core.sccl.base.ScclBase;
// import org.apache.commons.lang3.StringUtils;
// import org.springframework.stereotype.Component;
//
// import java.util.HashMap;
// import java.util.List;
// import java.util.Map;
//
// /**
//  * @author ricky
//  * @date 2021/12/5
//  */
// @Component
// public class ScclUtil {
//     private final Map<String, ScclBase> scclBaseMap = new HashMap<>();
//
//     public Object getValue(Rcpz rcpz, Object inputDTO) {
//         String cslx = rcpz.getCslx();
//         if ("Object".equals(cslx)) {
//             assert inputDTO instanceof Map;
//         } else if ("List".equals(cslx)) {
//             assert inputDTO instanceof List;
//         }
//         if (inputDTO == null) {
//             inputDTO = getValue(rcpz.getSccl());
//         }
//
//         List<Rcpz> children = rcpz.getChildren();
//         if (children == null) {
//             return inputDTO;
//         }
//         for (Rcpz child : children) {
//             if ("Object".equals(cslx)) {
//                 Map<String, Object> map = (Map<String, Object>) inputDTO;
//                 Object value = getValue(child, map.get(child.getCsbm()));
//                 map.put(child.getCsbm(), value);
//             } else if ("List".equals(cslx)) {
//                 getValue(child, inputDTO);
//             }
//         }
//         return inputDTO;
//     }
//
//     private ScclBase getSccl(String sccl) {
//         return scclBaseMap.computeIfAbsent(sccl, k -> {
//             try {
//                 Class<?> aClass = Class.forName("com.tfswx.jkgl.core.sccl." + k);
//                 return (ScclBase) aClass.newInstance();
//             } catch (ClassNotFoundException e) {
//                 throw new RuntimeException("错误的生成策略", e);
//             } catch (InstantiationException e) {
//                 throw new RuntimeException("初始化生成策略失败", e);
//             } catch (IllegalAccessException e) {
//                 throw new RuntimeException("无权初始化生成策略", e);
//             }
//         });
//     }
//
//     public Object getValue(String sccl) {
//         if (StringUtils.isBlank(sccl)) {
//             return null;
//         }
//         return getSccl(sccl).getValue();
//     }
// }
